Programmation Client II¶

Les Dates¶

Quelle heure est-il?¶

C'est difficile en bâtard¶

  1. Il est 6h00PM
  1. Il sont fou ces américains... Il est 18h00
  1. Mais où? Il est 18h00 à montréal
  1. S'il est 18h00 à montréal, je suis incapable de dire quel heure il est à Saint-Petersbourg sans parler de data (merci à l'heure d'hiver). Donc, il est 18h00 à montréal le 7 decembre 2023

Fait: les dates et heures c'est vraiment compliqué¶

  • https://gist.github.com/timvisee/fcda9bbdff88d45cc9061606b4b923ca

Solutions à la complexité (pas vraiment)¶

L'heure UTC (Coordinated Universal Time) (temps universel coordonné)¶

  • Le fuseau horaire préféré des programmeurs

UTC est une échelle de temps comprise entre le temps atomique international (TAI) qui est stable mais déconnecté de la rotation de la Terre et le temps universel (TU), directement lié à la rotation de la Terre et donc lentement variable.

Dans « Temps Universel Coordonné » UTC, le terme « coordonné » indique que ce temps s’écoule de façon identique à celui du Temps Atomique International, il en a la stabilité et l’exactitude à un nombre entier de secondes près, et grâce à un mécanisme d'ajustement mis en œuvre chaque fois que nécessaire, il est décalé d'une seconde pour qu'il reste proche du temps universel à moins de 0,9 s près.

-- wikipedia

Points¶

  • Les serveurs sont habituellement en temps UTC

  • Les navigateurs sont habituellement en temps locale

Fuseaux Horaires¶

  • Les fuseaux horaires se comparent à UTC zero (aka, heure de londres en hivers)

  • https://fr.wikipedia.org/wiki/Fuseau_horaire

Los Angeles, États-Unis (UTC-8) : 04:00
Chicago, États-Unis (UTC-6) : 06:00
New York, États-Unis (UTC-5) : 07:00
Halifax, Canada (UTC-4) : 08:00
Londres, Royaume-Uni (UTC±0) : 12:00

Heure Unix (Unix epoch time)¶

L'heure Unix ou heure Posix est une mesure du temps fondée sur le nombre de secondes écoulées depuis le 1er janvier 1970 00:00:00 UTC, hors secondes intercalaires. Elle est utilisée principalement dans les systèmes qui respectent la norme POSIX1, dont les systèmes de type Unix, d'où son nom. C'est la représentation POSIX du temps.

Fait: On veut pleurer...¶

Ce que javascript nous offre?¶

Heure Unix¶

  • On peut demander à javascript quelle est l'heure UNIX

  • Ce que javascript nous retourne est un nombre en milli secondes

let unixTimestamp = Date.now();
console.log(unixTimestamp) // 1701713417357

Ça nous aide? oui mais pas tout le temps¶

  • Ça peut nous aider à calculer le durée entre deux événements

  • Mais, sincèrement, quelle est l'heure à 1701713417357?

Donc, on va construire une "instance"¶

let date = new Date();
let dateString = date.toString();
console.log(dateString) // Mon Dec 04 2023 13:21:26 GMT-0500 (heure normale de l’Est)

Syntaxe¶

let date = new Date();
      ^     ^   ^
      3     1   2
  1. Un mot réservé qui créer une instance à partir d'une classe
  2. Le nom de la classe.
  3. L'instance de la classe
In [13]:
let date = new Date()
let dateString = date.toLocaleString();
console.log(dateString)
2023-12-04 13 h 24 min 10 s

Tout ça pour un exemple explicatif...¶

Que ce passe-t-il dans l'expression?¶

let date = new Date()
  1. Il y a le mot magique new
  2. new Date() créer un "objet" de de type Date
    1. Ici, "objet" veut dire données plus fonctions
    2. En fait, on ne veut pas les données, on veut les fonctions
    3. Nous allons appeler les fonctions d'un objet des méthodes

Les méthodes de la classe Date¶

> date.
constructor           getMilliseconds       getUTCFullYear        setYear
toString              setMilliseconds       setUTCFullYear        toJSON
toDateString          getMinutes            getUTCHours           toLocaleString
toTimeString          setMinutes            setUTCHours           toLocaleDateString
toISOString           getMonth              getUTCMilliseconds    toLocaleTimeString
toUTCString           setMonth              setUTCMilliseconds    __defineGetter__
toGMTString           getSeconds            getUTCMinutes         __defineSetter__
getDate               setSeconds            setUTCMinutes         hasOwnProperty
setDate               getTime               getUTCMonth           __lookupGetter__
getDay                setTime               setUTCMonth           __lookupSetter__
getFullYear           getTimezoneOffset     getUTCSeconds         isPrototypeOf
setFullYear           getUTCDate            setUTCSeconds         propertyIsEnumerable
getHours              setUTCDate            valueOf
setHours              getUTCDay             getYear

La documentation de la classe Date¶

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

Exercices¶

  1. Quelle heure est-il localement?

  2. Quelle mois sommes-nous présentement? Écrire le mois mot.

  3. Quelle année sommes-nous?

  4. Quel est l'époch time présentement (en seconde)?

  5. Quelles minutes dans l'heure est-il présentement?

  6. Dans quel fuseau horaire vous trouvez vous présentement (en heure par rapport à UTC-0)?

  7. Quelle est l'epoch time dans exactement 1 an?

  8. Quelle était l'époch time à ce moment exact le mois passé?